From cda014b14f64783b6df3880e6be2f66f8dabdc7a Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=98yvind=20Kol=C3=A5s?= Date: Fri, 20 Jul 2018 16:27:55 +0200 Subject: [PATCH] babl: use an existing const char ptr for encoding in format --- babl/babl-format.c | 38 ++++++++++++-------------------------- babl/babl-format.h | 1 + babl/babl.h | 2 +- 3 files changed, 14 insertions(+), 27 deletions(-) diff --git a/babl/babl-format.c b/babl/babl-format.c index 51e5458..7b81cae 100644 --- a/babl/babl-format.c +++ b/babl/babl-format.c @@ -143,11 +143,12 @@ format_new_from_format_with_space (const Babl *format, const Babl *space) ret = format_new (new_name, 0, - format->format.planar, format->format.components, + format->format.planar, format->format.components, (void*)babl_remodel_with_space (BABL(format->format.model), space), space, format->format.component, format->format.sampling, (void*)format->format.type); + ret->format.encoding = babl_get_name(format); babl_db_insert (db, (void*)ret); return ret; } @@ -713,38 +714,23 @@ BABL_CLASS_IMPLEMENT (format) const char * babl_format_get_encoding (const Babl *babl) { - static char ret[256]; - const char *name = babl_get_name (babl); - strcpy (&ret[0], name); - if (babl_format_get_space (babl) != babl_space ("sRGB")) - { - - if (strstr (ret, "-space")) - *strstr (ret, "-space") = '\0'; - - name = &ret[0]; - } - return name; + if (!babl) return NULL; + if (babl->format.encoding) return babl->format.encoding; + return babl_get_name (babl); } const Babl * -babl_format_with_space (const char *name, const Babl *space) +babl_format_with_space (const char *encoding, const Babl *space) { - char tmpname[256]=""; - const Babl *example_format = (void*) name; - if (!name) return NULL; + const Babl *example_format = (void*) encoding; + if (!encoding) return NULL; if (BABL_IS_BABL (example_format)) { - name = babl_get_name (example_format); + encoding = babl_get_name (example_format); if (babl_format_get_space (example_format) != babl_space ("sRGB")) { - strcpy (&tmpname[0], name); - - if (strstr (tmpname, "-space")) - *strstr (tmpname, "-space") = '\0'; - - name = &tmpname[0]; + encoding = babl_format_get_encoding (example_format); } } @@ -764,9 +750,9 @@ babl_format_with_space (const char *name, const Babl *space) return NULL; } if (space == babl_space("sRGB")) - return babl_format (name); + return babl_format (encoding); - return format_new_from_format_with_space (babl_format (name), space); + return format_new_from_format_with_space (babl_format (encoding), space); } int diff --git a/babl/babl-format.h b/babl/babl-format.h index ddf7861..b3a4643 100644 --- a/babl/babl-format.h +++ b/babl/babl-format.h @@ -43,6 +43,7 @@ typedef struct for conversion paths */ int format_n; /* whether the format is a format_n type or not */ int palette; + const char *encoding; } BablFormat; #endif diff --git a/babl/babl.h b/babl/babl.h index 12b09c1..e0fd9e5 100644 --- a/babl/babl.h +++ b/babl/babl.h @@ -181,7 +181,7 @@ int babl_format_exists (const char *name); * the unsuffixed version is used. If a format is passed in as space * the space of the format is used. */ -const Babl * babl_format_with_space (const char *name, const Babl *space); +const Babl * babl_format_with_space (const char *encoding, const Babl *space); const Babl * babl_model_with_space (const char *name, const Babl *space); -- 2.30.2